/* =============================================================================================
"LightBox Scroll" : A picture can carry out a view as popup and it can also display a big picture by vertical scrolling.
Copyright (C) 2012  A24.TANAKA

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

GNU General Public License : http://www.gnu.org/licenses/gpl.html

------------------------------------------------------------------------------------------------
『LightBox Scroll』は、画像のポップアップ表示し、大きな画像は縦スクロールで表示する事も出来る。
Copyright (C) 2012  A24.TANAKA

　このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフトウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョン2か、希望によってはそれ以降のバージョンのうちどれか)の定める条件の下で再頒布または改変することができます。
　このプログラムは有用であることを願って頒布されますが、*全くの無保証* です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも含め全く存在しません。詳しくはGNU 一般公衆利用許諾契約書をご覧ください。
　GNU 一般公衆利用許諾契約書 ： http://www.opensource.jp/gpl/gpl.ja.html
============================================================================================= */

/* =============================================================================================
Ver. 1.00
	lbs_0.92_(05)

============================================================================================= */


function LightBoxScroll(opts) {
	if ( !navigator.userAgent.match(/windows/i) || document.compatMode == 'BackCompat' ) return;
	if ( this.chk ) return;
	this.chk = true;
	
/// ＝＝＝＝＝＝＝＝＝＝＝＝ 汎用関数 ＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
	(typeof document.documentElement.outerHTML == 'undefined') && (function() {
		HTMLElement.prototype.__defineGetter__('outerHTML', function() {
			var r=document.createRange(), e=document.createElement('div');
			r.selectNode(this); e.appendChild(r.cloneContents());
			return e.innerHTML;
		});
		HTMLElement.prototype.__defineSetter__('outerHTML', function(html) {
			var r=document.createRange(), f;
			r.setStartBefore(this); f=r.createContextualFragment(html);
			this.parentNode.replaceChild(f, this);
		});
	}());
	(typeof document.documentElement.innerText == 'undefined') && (function() {
		HTMLElement.prototype.__defineGetter__('innerText', function() {
			return this.textContent;
		});
		HTMLElement.prototype.__defineSetter__('innerText', function(text) {
			while(this.hasChildNodes()) { this.removeChild(this.lastChild); }
			this.appendChild(document.createTextNode(text));
		});
	}());
	
	var addEvent = document.addEventListener ? 
		function(elm,type,func){
			if (type == 'mousewheel') { elm.addEventListener('DOMMouseScroll',func,false); }
			elm.addEventListener(type,func,false);
		}
		: function(elm,type,func){ elm.attachEvent('on'+type,func); } ;
		
	var removeEvent = document.removeEventListener ? 
		function(elm,type,func){
			if (type == 'mousewheel') { elm.removeEventListener('DOMMouseScroll',func,false); }
			elm.removeEventListener(type,func,false);
		}
		: function(elm,type,func){ elm.detachEvent('on'+type,func); } ;
	
	var isIE = (document.all && !window.opera);
	var ieVer = ( navigator.userAgent.match(/MSIE (\d\d?)\.0/i) || [0,0] )[1];
	var isIElt7 = isIE && ieVer < 7;
	var isIElt9 = isIE && ieVer < 9;
	
	function setStyles(elm, styles) { /// styles = {name0:'value0', name1:'value1', ...}
		for (var _st in styles) {
			if (isIElt9 && _st == 'opacity') {
				if (styles[_st] > 0.99) elm.style.removeAttribute('filter');
				else elm.style.filter = ['alpha(opacity=', (styles[_st]*100), ')'].join('');
			}
			else { elm.style[_st] = styles[_st]; }
		}
	};
	
	function px(_px) { return _px+'px'; };
	
	function getPageSize() {
		var dde = document.documentElement;
		var dbdy = document.body;
		return {
			width: (dde && dde.clientWidth) ? dde.clientWidth : (dbdy.clientWidth) ? dbdy.clientWidth : window.innerWidth,
			height: (dde && dde.clientHeight) ? dde.clientHeight : (dbdy.clientHeight) ? dbdy.clientHeight : window.innerHeight
		}
	};
	
/// ＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝ ここから初期化処理開始 ＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
	
	/// ========== 内部変数定義 ==============================================================
	var def = {	/// ココログ jslib LBS にアップ
		gifCOZ: 'http://goo.gl/gGl53',			// 'lbs_close_open_zoom.gif',
		gifOnmouse : (isIE) ? 'http://goo.gl/knhGe' : 'http://goo.gl/rusU2',
												// 'lbs_cursor2.cur' : 'lbs_cursor2.gif'
		gifLoading : 'http://goo.gl/M1qTn',		// 'lbs_loading.gif',
		gifNext0 : 'http://goo.gl/pg5lX',		// 'lbs_next0.gif',
		gifNext1 : 'http://goo.gl/cGeUp',		// 'lbs_next1.gif',
		gifNext2 : 'http://goo.gl/jkpFf',		// 'lbs_next2.gif',
		gifPrev0 : 'http://goo.gl/MiuXa',		// 'lbs_prev0.gif',
		gifPrev1 : 'http://goo.gl/gnbMj',		// 'lbs_prev1.gif',
		gifZoom0 : 'http://goo.gl/pNpvz',		// 'lbs_zoom0.gif',
		gifZoom1 : 'http://goo.gl/Rk7xD',		// 'lbs_zoom1.gif',
		gifShadow : 'http://goo.gl/V6ib3'		// 'lbs_shadow.gif'		///[end of property]
	};
	var lbs = {
		mode : (opts.imgRegs ? 'image' : opts.mode || 'lightbox'),
		classN : opts.mode || '',
		dropShadow : opts.dropShadow || false,
		overlayColor : opts.overlayColor || '#666',						// 背景色
		overlayOpacity : opts.overlayOpacity || 0.6,					// 背景の不透明度（1.0 で透過しない）
		zIndex : opts.zIndex || 80,
		imgSet : [],
		num : 0,
		isZoom : false,
		gifZoom : def.gifZoom0		///[end of property]
	};
	
	var imgs = [{}];	// image 要素保存用（オブジェクトの配列）
	var imgRegs = opts.imgRegs || [
		[/\.(googleusercontent|ggpht)\.com\/[^\.]+?\.jpg$/i, /\/[swh]\d+?\//, '/s0/']		///[end of data]
	];
	
	var siteRegs = '';
	for ( var ii = 0 ; ii < (imgRegs.length-1) ; ii ++ ) {
		siteRegs += imgRegs[ii][0].source + '|';
	}
	siteRegs += imgRegs[ii][0].source;
	var siteReg = new RegExp(siteRegs, 'i');
	
	addEvent(window, 'load', function(){
		createBox();
		lbs.element = opts.element ? document.getElementById(opts.element) : document;
		(lbs.mode == 'image') ? setClickEvent() : setClickEventA();
	});
	return;
	/// ＝＝＝＝ 初期化実行処理終わり ＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
	
	/// ======== クリックイベント登録 ========================================================
	function setClickEvent() {	// image 要素
		var _chek = ( lbs.classN )
				? function (_emlt) {return (_emlt.className.match(RegExp('(?:^|\\s+)(' + lbs.classN + ')(\\s+|$)', 'i'))) }
				: function (_emlt) {return ['', '_']} ;
		
		var _cnt = 0;
		var _imgSrc;
		var _elmts= lbs.element.getElementsByTagName('img');
		
		for ( var i = 0 ; i < _elmts.length ; i++ ) {
			
			var _clas;
			if ( (_clas = _chek(_elmts[i])) ) {
				var _rel = _clas[1].toLowerCase();
				if (!lbs.imgSet[_rel]) lbs.imgSet[_rel] = new Array();	// グループ化対応
				if ( siteReg.test(_elmts[i].src) ) {
					_imgSrc = _elmts[i].src;
					for ( var _num=0 ; _num < imgRegs.length ; _num++ ) {
						if ( _imgSrc.match(imgRegs[_num][0]) ) {
							if ( lbs.dropShadow ) dropShadow(_elmts[i]);
							
							_elmts[i].style.cursor = 'url('+def.gifOnmouse+'),move';
							_elmts[i].onclick = function(){displayImg(this.num, this.set); return false;};
							_elmts[i].set = _rel;
							_elmts[i].num = lbs.imgSet[_rel].length;
							
							lbs.imgSet[_rel].push({
								set :_rel,		/// for debug
								full:_imgSrc.replace(imgRegs[_num][1], imgRegs[_num][2]),
								ttl :_elmts[i].title || _imgSrc.replace(/(.+\/)([^\/\.]+)\..*/,'$2')	///[end of property]
							});
							
							break;
						}
					}
				}
			}
		}
	};
	
	function setClickEventA() {
		var _chek = (lbs.mode == 'lightbox')
				? function (_emlt) {return (_emlt.getAttribute('rel') && _emlt.getAttribute('rel').match(/(lightbox.*)/i)) }
				: function (_emlt) {return (_emlt.className.match(RegExp('(?:^|\\s+)(' + lbs.mode + ')(\\s+|$)', 'i'))) };
		
		var _cnt = 0;
		var _elmts= lbs.element.getElementsByTagName('a');
		for ( var i=0 ; i < _elmts.length ; i++ ) {
			var _clas;
			if ( (_clas = _chek(_elmts[i])) ) {
				var _rel = _clas[1].toLowerCase();
				if (!lbs.imgSet[_rel]) lbs.imgSet[_rel] = new Array();	// グループ化対応
				if ( lbs.dropShadow ) dropShadow(_elmts[i].getElementsByTagName('img')[0]);
				
				_elmts[i].style.cursor = 'url('+def.gifOnmouse+'),move';
				_elmts[i].onclick = function(){displayImg(this.num, this.set); return false;};
				_elmts[i].num = lbs.imgSet[_rel].length;
				_elmts[i].set = _rel;
				
				lbs.imgSet[_rel].push({
					set :_rel,		/// for debug
					full:_elmts[i].href,
					ttl :_elmts[i].title || _elmts[i].href.replace(/(.+\/)([^\/\.]+)\..*/,'$2')	///[end of property]
				});
			}
		}
	};
	
	function dropShadow(_img) {
		if (!_img) return;
		_img.style.cssText = 'position:relative;vertical-align:bottom;'	// 重要
			+ 'left:-4px;top:-5px;padding:5px;background:#EEF;border:1px solid #999;' ;
		_img.outerHTML = '<span style="background:url(' +def.gifShadow+ ') right bottom;'
			+ 'display:inline-block;margin:4px 4px;">' +_img.outerHTML+ '</span>';
	};
	
	/// ＝＝＝＝ 以下内部処理関数関数定義 ＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
	/// ======== 呼び出しメイン関数 ==========================================================
	function displayImg(_num, _set) {
		if ( !!_set ) imgs = lbs.imgSet[_set];
		
		lbs.num = _num = (_num<=0) ? 0 : (_num>=imgs.length) ? imgs.length-1 : _num;
		
		if ( isIElt7 ) {
			var pageSize = getPageSize();
			setStyles(lbs.over, {width:px(pageSize.width), height:px(pageSize.height)});
			setStyles(lbs.lod, {width:px(pageSize.width), height:px(pageSize.height)});
		}
		lbs.over.style.display = lbs.lod.style.display = 'block';
		lbs.box.style.display = 'none';
		
		// 表示イメージのローディング
		// タイミングによっては、IE, firefox も前の画像が残ってしまうので、遅延させている
		// 正常でも、キャッシュが働いていると切替が見にくいので、遅延させている
		var _imgObj = new Image;
		_imgObj.onload = function () {
			setTimeout('this.onload2()', 500);
		};
		
		this.onload2 = function() {
			lbs.imgWidth = _imgObj.width;
			lbs.imgHeight = _imgObj.height;
			lbs.lod.style.display = 'none';
			window.onresize = doResize;
			doResize();
			lbs.btnP.style.display = (_num) ? 'block' : 'none';
			lbs.btnN.style.display = (_num<(imgs.length-1)) ? 'block' : 'none';
			lbs.wrap.scrollTop = lbs.xpos = 0;
		};
		// 両方に設定しないと IE, firefox ともにタイミングによって前の画像が残る為
		lbs.img.src = _imgObj.src = imgs[_num].full;
	};
	
	/// ======== ポップアップクローズ ========================================================
	function closeBox() {
		window.onresize = function(){};
		lbs.lod.style.display = 'none';
		lbs.over.style.display = lbs.box.style.display = 'none';
	};
	
	/// ======== 表示処理、基本的にウィンドウ リ・サイズイベントで呼び出される ===============
	function doResize() {
		var pageSize = getPageSize();
		var pw = pageSize.width, ph = pageSize.height;
		
		// 拡大は行わないので 1.0 以下となるように min を使っている
		var minX = Math.min((pw-32-16-17)/lbs.imgWidth, 1.0);	///[埋込] 17=スクロールバー
		var minY = Math.min((ph-38-16)/lbs.imgHeight, 1.0);		///[埋込]
		var min  = Math.min(minX, minY);
		
		var iw = parseInt( lbs.imgWidth*min );
		var ih = parseInt( lbs.imgHeight*min );
		
		lbs.wrap.style.overflowY = 'hidden';
		lbs.btnN2.style.display = 'none';
		
		if ( min<1.0 && minX>minY ) {	// 縦方向の縮小率が支配的なら、縦スクロール
			if ( lbs.isZoom ) {	/// 縮小表示へ戻す
				lbs.wrap.style.overflowY = 'scroll';
				lbs.gifZoom = def.gifZoom1;
				lbs.rate.onclick = function(){
					lbs.isZoom = false;
					doResize();
				};
				min = minX;
				iw = parseInt(lbs.imgWidth*min) +17;		///[埋込] 17=スクロールバー
				
				/// 縦方向はウィンドウサイズで制限
				ih = parseInt(Math.min(lbs.imgHeight*min, (ph-34)-16));		///[埋込]
			}
			else {	/// 横拡大可能
				lbs.gifZoom = def.gifZoom0;
				lbs.rate.onclick = function(){
					lbs.isZoom = true;
					doResize();
				};
			}
			lbs.rate.innerHTML = '&lt; '+Math.round(min*100)+'% &gt;';
			lbs.rate.style.backgroundImage = 'url('+lbs.gifZoom+')';
			lbs.rate.style.cursor = 'pointer';
			lbs.rate.onmouseover = function(){this.style.backgroundImage = 'url('+lbs.gifZoom+')'};
			lbs.rate.onmouseout  = function(){this.style.backgroundImage = 'url(null)'};
		}
		else {
			lbs.rate.innerHTML = '[ '+Math.round(min*100)+'% ]';
			lbs.rate.style.backgroundImage = 'url(null)';
			lbs.rate.style.cursor = 'default';
			lbs.rate.onmouseover = function(){this.style.backgroundImage = 'url(null)'};
		}
		
		var lft = (pw-iw-28)/2;		///[埋込]
		var top = (ph-ih-34)/2;		///[埋込]
		
		if ( isIElt7 ) {	///[注]下記の先頭の「;」は必要！
			lbs.box.style.cssText += '; top:expression(eval(document.documentElement.scrollTop+' +top+ '));'
									+ 'left:expression(eval(document.documentElement.scrollLeft+' +lft+ '));';
		}
		else {
			setStyles(lbs.box, {left:px(lft), top:px(top)});
		}
		
		var iw2 = Math.max(iw*0.2, 64*1.5);		///[埋込]
		setStyles(lbs.over, {width:px(pw), height:px(ph)});
		setStyles(lbs.wrap, {width:px(iw), height:px(ih)});
		setStyles(lbs.rate, {width:px(Math.min(iw*0.3,200)), height:px(14+30*1.5), left:px(iw*0.35+14-2)});		///[埋込]
		setStyles(lbs.btnP, {top:px(ih*0.3), width:px(iw2), height:px(ih*0.5)});
		setStyles(lbs.btnN2, {top:px(ih*0.3), width:px(iw2), height:px(ih*0.5)});
		
		if ( lbs.wrap.style.overflowY == 'scroll' ) {
			lbs.btnX.style.right = '34px';		///[埋込]
			lbs.btnN2.style.display = 'block';
			setStyles(lbs.btnN, {top:px(ih*0.3), width:px(16), height:px(ih*0.5)});
		}
		else {
			lbs.btnX.style.right = '0px';		///[埋込]
			setStyles(lbs.btnN, {top:px(ih*0.3), width:px(iw2), height:px(ih*0.5)});
		}
		
		lbs.caption.style.width = px(iw+14*2);		///[埋込]
		if (imgs.length>2) {
			lbs.caption.innerHTML = ''
				+ '<span style="float:left;cursor:pointer;font-size:13px;" title="top">'
				+ ( (lbs.num) ? '&nbsp;|&laquo; &nbsp; &nbsp;' : '' )+'</span>'
				+ '<span style="float:right;cursor:pointer;font-size:13px;" title="last">'
				+ ( (lbs.num<(imgs.length-1)) ? '&nbsp; &nbsp; &raquo;|&nbsp;' : '' ) + '</span>'
				/// debug + imgs[lbs.num].set + '  '
				+ '[ '+ imgs[lbs.num].ttl +' ]&nbsp; (' + (lbs.num+1) +'/'+ imgs.length +')' ;
			
			lbs.caption.getElementsByTagName('span')[0].onclick = function(){displayImg(0)};
			lbs.caption.getElementsByTagName('span')[1].onclick = function(){displayImg(imgs.length-1)};
		}
		else {
			lbs.caption.innerHTML = '[ '+imgs[lbs.num].ttl+' ]&nbsp; ('+(lbs.num+1)+'/'+imgs.length+')';
		}
		
		lbs.box.style.display = 'block';
	};
	
	/// ======== ポップアップ用要素の生成 ====================================================
	function createBox() {
		var _body = document.getElementsByTagName('body')[0];
		
		var _cssText  = 'display:none; position:fixed; z-index:'+(lbs.zIndex+0)+';' 
				  + 'top:0px;left:0px;width:100%;height:100%;' ;
		if ( isIElt7 ) {
			_cssText += 'position:absolute;'
				+ 'top:expression(eval(document.documentElement.scrollTop));'
				+ 'left:expression(eval(document.documentElement.scrollLeft));' ;
			/// スクロール時に表示がガタガタしない為の処置
			_body.style.backgroundAttachment = 'fixed';
			if ( _body.currentStyle.backgroundImage == 'none' ) {
				_body.style.backgroundImage = 'url(null)';
			}
		}
		
		lbs.over = document.createElement('div');
		_body.appendChild(lbs.over);
		lbs.over.style.cssText = _cssText;
		setStyles(lbs.over, {backgroundColor:lbs.overlayColor, opacity:lbs.overlayOpacity});
		lbs.over.onclick = closeBox;
		
		// loading image
		lbs.lod = document.createElement('div');
		_body.appendChild(lbs.lod);
		lbs.lod.style.cssText = _cssText + 'background:url('+def.gifLoading+') center no-repeat;' ;
		lbs.lod.onclick = closeBox;
		
		// display box
		lbs.box = document.createElement('div');
		_body.appendChild(lbs.box);
		lbs.box.style.cssText = 'display:none;position:fixed;z-index:'+(lbs.zIndex+2)+';'
			+ 'background-color:#EEF;padding:14px 14px 18px 14px;'				///[埋込]
			+ 'border:2px solid #FFF;border-color:#FFF #777 #777 #FFF;' ;		///[埋込]
		if ( isIElt7 ) lbs.box.style.position = 'absolute';
		
		addEvent(lbs.box, 'mousewheel', 
			function (evt){
				evt = evt || window.event;
				// 正負だけ分かればよい（回転数はブラウザ、スクロール量設定で異なる為実質使用できない）
				var delta = evt.wheelDelta || -evt.detail || 0;
				var _st = lbs.img.height - parseInt(lbs.wrap.style.height);
				if (delta < 0) {	// 下方向にまわした場合の処理
					lbs.wrap.scrollTop += ( (lbs.wrap.scrollTop+80)>_st ) ? _st : 80;	///[埋込]
				}
				else {	// 上方向にまわした場合の処理
					lbs.wrap.scrollTop -= ( (lbs.wrap.scrollTop-80)>_st ) ? _st : 80;	///[埋込]
				}
				// 伝播を止める
				if (evt.preventDefault) {
					evt.preventDefault();	// 規定動作のキャンセル
					evt.stopPropagation();	// 伝播のキャンセル
				}
				else {
					window.event.returnValue = false;	// 規定動作のキャンセル
					window.event.cancelBubble = true;	// 伝播のキャンセル
				}
			}
		);
		
		// 共通定義
		_cssText = 'position:absolute;margin:0;padding:0;border:0;cursor:pointer;z-index:'+(lbs.zIndex+4)+';' ;
		
		// 閉じるボタン
		lbs.btnX = document.createElement('div');
		lbs.box.appendChild(lbs.btnX);
		lbs.btnX.style.cssText = _cssText + 'top:0px;right:0px;'
			+ 'background:url('+def.gifCOZ+') no-repeat right top;width:80px;height:40px;' ;	///[埋込]
		lbs.btnX.onclick = closeBox;
		lbs.btnX.onmouseover = function(){this.style.backgroundPosition = 'right -120px';};
		lbs.btnX.onmouseout  = function(){this.style.backgroundPosition = 'right top';};
		
		// 画像のみ表示ボタン
		lbs.btnF = document.createElement('div');
		lbs.box.appendChild(lbs.btnF);
		lbs.btnF.style.cssText = _cssText + 'top:0px;left:0px;'
			+ 'background:url('+def.gifCOZ+') no-repeat left top;width:80px;height:40px;' ;
		lbs.btnF.onclick = function(){location.href = lbs.img.src};
		lbs.btnF.onmouseover = function(){this.style.backgroundPosition = 'left -120px';};
		lbs.btnF.onmouseout  = function(){this.style.backgroundPosition = 'left top';};
		
		// display rate
		lbs.rate = document.createElement('div');
		lbs.box.appendChild(lbs.rate);
		lbs.rate.style.cssText = _cssText + 'top:-2px;left:0px;font-size:12px;text-align:center;'
			+ 'background:url(null) no-repeat center 16px;width:100%;height:60px;' ;	///[埋込]
		
		// wrapper object
		lbs.wrap = document.createElement('div');
		lbs.box.appendChild(lbs.wrap);
		lbs.wrap.style.cssText = 'margin:0;padding:0;border:0;overflow:hidden;' ;
		
		// image object （isIE、ＩＥ６対応版）
		// 他と同様の createElement('img'), appendChild(lbs.img) では、子要素として正しく登録できない！？
		lbs.wrap.innerHTML = '<img src="null" alt="">';
		lbs.img = lbs.wrap.getElementsByTagName('img')[0];
		lbs.img.style.cssText = 'margin:0;padding:0;border:0;width:100%;display:block;' ;
		
		// 画像切替後のズームナビの非表示対応
		function rateOff() {lbs.rate.style.backgroundImage = 'url(null)'};
		
		// prev botton
		lbs.btnP = document.createElement('div');
		lbs.box.appendChild(lbs.btnP);
		lbs.btnP.style.cssText = _cssText + 'top:50%;left:0px;'
			+ 'background:url('+def.gifPrev0+') no-repeat left center;width:64px;height:50%;' ;		///[埋込]
		lbs.btnP.onclick = function(){ displayImg(--lbs.num); return false;};
		lbs.btnP.onmouseover = function(){this.style.backgroundImage = 'url('+def.gifPrev1+')'};
		lbs.btnP.onmouseout  = function(){this.style.backgroundImage = 'url('+def.gifPrev0+')'; rateOff()};
		
		// next botton
		lbs.btnN = document.createElement('div');
		lbs.box.appendChild(lbs.btnN);
		lbs.btnN.style.cssText = _cssText + 'top:50%;right:0px;'
			+ 'background:url('+def.gifNext0+') no-repeat right center;width:64px;height:50%;' ;		///[埋込]
		lbs.btnN.onclick = function(){ displayImg(++lbs.num); return false;};
		lbs.btnN.onmouseover = function(){
			this.style.backgroundImage = 'url('+def.gifNext1+')';
			lbs.btnN2.style.backgroundPosition = 'right center';
		};
		lbs.btnN.onmouseout  = function(){
			this.style.backgroundImage = 'url('+def.gifNext0+')'; rateOff();
			lbs.btnN2.style.backgroundPosition = '-48px -25px';
		};
		
		// next botton2
		lbs.btnN2 = document.createElement('div');
		lbs.box.appendChild(lbs.btnN2);
		lbs.btnN2.style.cssText = _cssText + 'top:50%;right:32px;' + 'display:none;'
			+ 'background:url('+def.gifNext2+') no-repeat right center;width:48px;height:50%;' ;		///[埋込]
		lbs.btnN2.onclick = function(){ displayImg(++lbs.num); return false;};
		
		// IE 対応で下記にあわせて修正
		lbs.btnN2.onmouseover = function(){this.style.backgroundPosition = 'right center';};
		
		// lbs.btnN2.onmouseout  = function(){this.style.backgroundImage = 'none'; rateOff()};
		// IE 上記では onmouseover に対する反応領域が無くなってしまう（has layer？）
		lbs.btnN2.onmouseout  = function(){this.style.backgroundPosition = '-48px -25px';rateOff()};
		
		// caption
		lbs.caption = document.createElement('div');
		lbs.box.appendChild(lbs.caption);
		lbs.caption.style.cssText = _cssText + 'left:0px;bottom:0px;cursor:default;'		///[埋込]
			+ 'font-size:11px;text-align:center;' ;		///[埋込]
	};
};

/************************************************************************
// 呼び出し例
LightBoxScroll({
	//element : 'test',
	overlayColor : '#888',
	overlayOpacity : 0.75,
	//zIndex : 90,
	//mode : ['lightbox', 'image', 'LBM|LBS', 'lbsA|lbsB|lbsC'][2],
	//mode : 'LBM|LBS|lbsA|lbsB|lbsC',
	//imgRegs が有る場合は、mode 指定は無効で強制的に 'image' モードとなる
	imgRegs : [
		[/\/\/livedoor\.blogimg\.jp\/.+?-s\.jpg$/, '-s.jpg', '.jpg'],
		[/\.(googleusercontent|ggpht)\.com\/[^\.]+?\.jpg$/i, /\/[swh]\d+?\//, '/s0/']	//[end of data]
	],
	dropShadow : true,
	_end_of_property_ : 'Dummy'
});
************************************************************************/

/* =============================================================================
呼び出し引数（オブジェクト）
{
	overlayColor : ポップアップ時の背景色（デフォルト：'#666'）
	overlayOpacity : ポップアップ時の背景の不透明度（デフォルト：0.75）
	zIndex : ポップアップ表示時の重ね合わせ表示の順位（デフォルト：80）
	
	element : 初期化検索対象とする範囲を id名 で指定(element:'foo')（デフォルト：document）
	
	mode : クリックイベントを登録する対象の選択（デフォルト：'lightbox'）
	       'lightbox' ＝ a 要素の rel 属性が 'lightbox' が対象
	       ※ グループ化に対応（lightboxA, lightbox[foo], lightbox_bar 等。内部処理は小文字変換してグループ化）
	       
	       'クラス名' ＝ a 要素の class 属性に 'クラス名' があるもの
	       ※ クラス名でグループ化する場合は、'ABC|def|XYZ' のように指定する。内部処理は小文字変換してグループ化
	       
	       ★バージョンＡにて仕様変更
	       'image' モードは、imgRegs が有る場合
	       mode 指定で 'lightbox' 以外は、'image' モード対応のクラス名指定
	
	dropShadow : 'image' モード時にドロップシャドウを行うか否か（デフォルト：false）
	
	サムネイルとフルサイズ画像のファイル名が一定のルールで変換できる場合
	imgRegs : [[対象ファイル名，変換対象(サムネイル)，変換後の置換え部分],[･･･]]（配列の配列）
	以下の記述例を参考にされたい（対象ファイル名，変換対象は、正規表現）
	imgRegs : [
		// gooBlog
		[/\/\/blogimg\.goo\.ne\.jp\/thumbnail\//, /thumbnail\/([^\.]+?)_s.jpg/, 'user_image/$1.jpg'],
		
		// My Opera Photo/blog
		[/thumbs\.myopera\.com\//, /thumbs\.(myopera\.com\/).+?\/([^\/]+\/albums\/[^\/]+\/[^\.]+?\.jpg)/, 'files.$1$2'],
		
		// My Opera Photo/blog
		[/files\.myopera\.com\//, /(thumbs\/|\.jpg_thumb)/g, ''],
		
		// livedoor Blog
		[/\/\/livedoor\.blogimg\.jp\/.+?-s\.jpg$/, '-s.jpg', '.jpg'],
		
		// google web picasa
		[/\.(googleusercontent|ggpht)\.com\/[^\.]+?\.jpg$/i, /\/[swh]\d+?\//, '/s0/']	//[end of data]
		//【注】最後のデータには、「,」は不要！！
	]
	//【注】最後のプロパティには、「,」は不要！！
}
============================================================================= */


